home *** CD-ROM | disk | FTP | other *** search
Modula Definition | 1993-11-04 | 1.9 KB | 47 lines |
- DEFINITION MODULE MyLongRealConversions;
- (*
- Created: 10.02.88 by
- Stefan Salewski
- Stolper Weg 3
- 2160 Stade West-Germany
- Tel: 04141/61130
-
- Note: compiled with AMIGA Modula-2 System by AMSoft
-
- This Module may be freely copied. But please
- leave my name in. Thanks....Stefan
- *)
-
- VAR fillChar:CHAR; (* normalerweise=Leerzeichen, aber beliebig veraenderbar*)
-
- PROCEDURE StrToReal(str:ARRAY OF CHAR;VAR x:LONGREAL;VAR error:BOOLEAN);
- (* Wandelt einen String in eine LongRealZahl um.
- Ziffer::=('0'|'1'|'2'|'3'|'4'|'5'|'6'|'7'|'8'|'9')
- Exponent::=('E' ['+'|'-'] Ziffer [Ziffer | Ziffer Ziffer ])
- str ::={fillChar}['-'|'+'] Ziffer {Ziffer} ['.' Ziffer] {Ziffer} [Exonent]
-
- Wenn str obiges Format hat, ist error= FALSE. x wird bei einem
- Fehler nicht auf Null gesetzt, und kann trotz des Fehlers verwendet werden
- Beispiel: str=' 123.-34E12' ==> x=123.0
- str='-123.81E23g' ==>x=-123.81E23
- *)
-
- PROCEDURE RealToStr(x:LONGREAL;VAR str:ARRAY OF CHAR;m,n:INTEGER);
- (* ABS(m) gibt die Anzahl der gueltigen Ziffern an,ABS(n) die Nachkommastellen.
- n ist eingeschraenkt durch m, m wiederum durch HIGH(str).
- Es sollte gelten: ABS(n) < ABS(m) < HIGH(str).
- Ist m negativ, so wird die Zahl linksbuendig, sonst rechtsbuendig in
- str eingetragen. Ist n negativ, so wird Exponetialdarstellung verwendet.
- Der String muss mindesten 10 Zeichen gross sein (-n.mE+abc), sonst
- bricht das Programm ab.
- Ist die Zahl in normaler Notation zu gross fuer str, so wird die
- Exponentialdarstellung gewaehlt.
- Beispiel:HIGH(str)=9
- x:=-123.456789 m= 6 n=2 ==> ' -123.45'
- x:=-123.456789 m=-6 n=2 ==> '-123.45 '
- x:=123.456789 m=-6 n=2 ==> ' 123.45 '
- x:=123.456789 m=6 n=-2 ==> ' 1.2E+002'
- *)
-
- END MyLongRealConversions.def
-